]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
system: Track buttonGroup visibility using a group of actors
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Sat, 31 Aug 2019 21:09:04 +0000 (23:09 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Mon, 9 Sep 2019 19:28:19 +0000 (19:28 +0000)
Cleanup the visibility check on actions by using an array of actors to
track, so that we don't repeat the same variables multiple times.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700

js/ui/status/system.js

index 2b2d991842da3886b091e8fb3d29e9ef88ec5d48..f18a8e270e76bac79ad9673f0109cf334f4e2cd6 100644 (file)
@@ -137,15 +137,6 @@ var Indicator = class extends PanelMenu.SystemIndicator {
         this._sessionUpdated();
     }
 
-    _updateActionsVisibility() {
-        let visible = (this._settingsAction.visible ||
-                       this._orientationLockAction.visible ||
-                       this._lockScreenAction.visible ||
-                       this._altSwitcher.actor.visible);
-
-        this.buttonGroup.visible = visible;
-    }
-
     _sessionUpdated() {
         this._settingsAction.visible = Main.sessionMode.allowSettings;
     }
@@ -302,15 +293,18 @@ var Indicator = class extends PanelMenu.SystemIndicator {
 
         this.menu.addMenuItem(item);
 
-
-        this._settingsAction.connect('notify::visible',
-                                     () => this._updateActionsVisibility());
-        this._orientationLockAction.connect('notify::visible',
-                                            () => this._updateActionsVisibility());
-        this._lockScreenAction.connect('notify::visible',
-                                       () => this._updateActionsVisibility());
-        this._altSwitcher.actor.connect('notify::visible',
-                                        () => this._updateActionsVisibility());
+        let visibilityGroup = [
+            this._settingsAction,
+            this._orientationLockAction,
+            this._lockScreenAction,
+            this._altSwitcher.actor,
+        ];
+
+        for (let actor of visibilityGroup) {
+            actor.connect('notify::visible', () => {
+                this.buttonGroup.visible = visibilityGroup.some(a => a.visible);
+            });
+        }
     }
 
     _onSettingsClicked() {